﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using LogManager.Base.Data;
using Microsoft.Practices.ServiceLocation;
using System.ComponentModel.DataAnnotations;

namespace LogManager.Base
{
    /// <summary>
    /// A log where records are saved
    /// </summary>
    public interface ILog
    {
        /// <summary>
        /// All additional information of the log is stored in this dictionary
        /// </summary>
        IDictionary<string, object> Properties { get; }

        /// <summary>
        /// The id of the event log. Can be also be the log name.
        /// </summary>
        string LogName { get; set; }

        /// <summary>
        /// The server of the log
        /// </summary>
        string ServerName { get; set; }

        string Type { get; }
        
        /// <summary>
        /// Last write time to the log
        /// </summary>
        DateTime? LastWriteTime { get; set; }

        IEventExportService ExportService { get; }

        void Initialize(string serverName, string logName, string typeId);

        /// <summary>
        /// Numbe of events per log
        /// </summary>
        int? Count { get; set; }
    }  

    
}